<?php
/**
 * Created by PhpStorm.
 * User: HeiYanHeiMao
 * Date: 2020/2/27
 * Time: 17:32
 */

namespace app\model;


use Exception;
use think\facade\Db;
use think\response\Json;

class CategoryModel
{
    private static $_table = 'eb_category'; // 商品分类表

    /**商户获取商品分类列表
     * @return Json
     */
    public static function storeGetList()
    {
        try {
            $info = Db::table(self::$_table)->field('type,id,name')->select()->toArray();
            return jsonSuccess('获取成功', $info);
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**列表
     * @param $input
     * @param $token
     * @return Json
     */
    public static function list($input, $token)
    {
        try {
            // 检测当前管理员状态
            $adminInfo = AdminModel::getInfo($token, [1], [1]);
            if ($adminInfo instanceof Json) return $adminInfo;
            $table = Db::table(self::$_table)->field('id,name,pic,type,sort');
            $count = $table->count();
            if ($count == 0) return jsonSuccess('获取成功', ['count' => 0, 'list' => []]);
            $list = $table->order('id', 'desc')->page($input['page'], $input['limit'])->select()->toArray();
            return jsonSuccess('获取成功！', ['count' => $count, 'list' => $list]);
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**添加
     * @param $input
     * @param $token
     * @return Json
     */
    public static function add($input, $token)
    {
        try {
            // 检测当前管理员状态
            $adminInfo = AdminModel::getInfo($token, [1], [1]);
            if ($adminInfo instanceof Json) return $adminInfo;
            $res = Db::table(self::$_table)->insertGetId($input);
            if ($res) return jsonSuccess('添加成功');
            return jsonFail('添加失败');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**获取单个
     * @param $input
     * @param $token
     * @return Json
     */
    public static function getOnly($input, $token)
    {
        try {
            // 检测当前管理员状态
            $adminInfo = AdminModel::getInfo($token, [1], [1]);
            if ($adminInfo instanceof Json) return $adminInfo;
            $map = [
                ['id', '=', $input['id']]
            ];
            $rtn = Db::table(self::$_table)->field('id,name,pic')->where($map)->find();
            if ($rtn) return jsonSuccess('获取成功',$rtn);
            return jsonFail('未找到数据');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**编辑
     * @param $input
     * @param $token
     * @return Json
     */
    public static function edit($input, $token)
    {
        try {
            // 检测当前管理员状态
            $adminInfo = AdminModel::getInfo($token, [1], [1]);
            if ($adminInfo instanceof Json) return $adminInfo;
            $id = $input['id'];
            unset($input['id']);
            $res = Db::table(self::$_table)->where('id',$id)->update($input);
            if ($res) return jsonSuccess('保存成功');
            return jsonFail('编辑失败，请刷新页面重试');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**编辑排序
     * @param $input
     * @param $token
     * @return Json
     */
    public static function editSort($input, $token)
    {
        try {
            // 检测当前管理员状态
            $adminInfo = AdminModel::getInfo($token, [1], [1]);
            if ($adminInfo instanceof Json) return $adminInfo;
            $id = $input['id'];
            unset($input['id']);
            $res = Db::table(self::$_table)->where('id',$id)->update($input);
            if ($res) return jsonSuccess('保存成功');
            return jsonFail('编辑失败，请刷新页面重试');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**删除
     * @param $input
     * @param $token
     * @return Json
     */
    public static function delete($input, $token)
    {
        try {
            // 检测当前管理员状态
            $adminInfo = AdminModel::getInfo($token, [1], [1]);
            if ($adminInfo instanceof Json) return $adminInfo;
            $map1 = [
                ['id', '=', $input['id']]
            ];
            $map2 = "select id from eb_goods where cate_id = {$input['id']} limit 1";
            $rtn = Db::table(self::$_table)->where($map1)->whereNotExists($map2)->delete();
            if ($rtn) return jsonSuccess('删除成功');
            return jsonFail('请确保该分类下没有商品或刷新页面重试');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }
}